//新创建了一个端口 用于接受上传文件  然后使用中间件 multer

const express = require("express");
const app = express();
const port = 9000;
const Response = require("./utils/Response.js");
//处理跨域问题
const cors = require("cors");
app.use(
  cors({
    //传参指定构造的时候放行所有的跨域
    origin: "*",
  })
);
//引入uuid模块
const uuid = require("uuid");
//配置中间件 multer 处理文件的上传
const multer = require("multer");
const uploadTools = multer({
  storage: multer.diskStorage({
    //该存储方案将会把文件啊直接存入磁盘
    destination: (req, file, callback) => {
      callback(null, "static"); //这里的null必须写
    },
    filename: (req, file, callback) => {
      //通过file获取原始文件名    例如huangbo.jpg
      let name = file.originalname;
      //截取源文件的后缀 .jpg .png ....
      let ext = name.substring(name.lastIndexOf("."));
      // 生成随机文件名 调用callback即可
      // let newName = Math.random() + ext;
      //这里用uuid模块
      let newName = uuid.v4() + ext;
      callback(null, newName); //这里的null必须写
    },
  }),
});

//配置static目录为静态找资源托管文件夹  这样就可以直接通过http:/ /ip.port/文件名  访问static目录下的资源
app.use(express.static("static"));

//上传文件的方式
app.post("/upload", uploadTools.single("file"), (req, res) => {
  //这个中间件的重点uploadTools.array('file')  会将有file字段中的文件数据通过uploadTools接受并且保存
  console.log(req.file);
  let url = "http://localhost:9000/" + req.file.filename;
  // res.send({
  //   // code: 200,
  //   // msg: "ok",
  //   // //客户端返回url  让客户可以访问到他上传的文件
  //   // url: url,
  // });
  //在进行优化  因为封装了Response  这个就是优化
  res.send(Response.ok(url));
});

app.listen(port, () => {
  console.log("上传文件服务器已经启动");
});
